#ifndef __T_Lista_Placa_Mux_
#define __T_Lista_Placa_Mux_

#include <malloc.h>
#include <memory.h>
#include "TMovimiento.h"
#include "TMux.h"
#include "TPlaca.h"

#define TLPM_OK 0
#define TLPM_ERR_MEMORIA 1
#define TLPM_ERR_LISTAVACIA 2
#define TLPM_ERR_NOHAYSIGUIENTE 3
#define TLPM_ERR_NOIMPLEMENTADO 4

typedef struct TElementoListaPlacaMux {
	TPlaca* placa;
	TMux* mux;
} TElementoListaPlacaMux;

typedef struct TNodoListaPlacaMux {
    struct TNodoListaPlacaMux *siguiente;
    void* elemento;
}TNodoListaPlacaMux;

typedef struct TListaPlacaMux {
    TNodoListaPlacaMux *primero;
    TNodoListaPlacaMux *corriente;
    int tam_elemento;
} TListaPlacaMux;

void TLPM_Crear(TListaPlacaMux *lista, int tam_elemento);
void TLPM_Destruir(TListaPlacaMux *lista);
void TLPM_Vaciar(TListaPlacaMux *lista);
int TLPM_Vacia(TListaPlacaMux *lista);
int TLPM_InsertarElemento(TListaPlacaMux *lista, void *elemento);
void TLPM_ElementoCorriente(TListaPlacaMux *lista, void *elemento);
int TLPM_MoverCorriente(TListaPlacaMux *lista, TMovimiento movimiento);
int TLPM_BorrarCorriente(TListaPlacaMux *lista);
void TLPM_ModificarCorriente(TListaPlacaMux *lista, void *elemento);

#endif

